<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  
  
  <title>Hexo</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta property="og:type" content="website">
<meta property="og:title" content="Hexo">
<meta property="og:url" content="https://lcsever.gitee.io/index.html">
<meta property="og:site_name" content="Hexo">
<meta property="og:locale" content="en_US">
<meta property="article:author" content="John Doe">
<meta name="twitter:card" content="summary">
  
    <link rel="alternate" href="/atom.xml" title="Hexo" type="application/atom+xml">
  
  
    <link rel="shortcut icon" href="/favicon.png">
  
  
    
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/typeface-source-code-pro@0.0.71/index.min.css">

  
  
<link rel="stylesheet" href="/css/style.css">

  
    
<link rel="stylesheet" href="/fancybox/jquery.fancybox.min.css">

  
<meta name="generator" content="Hexo 6.3.0"></head>

<body>
  <div id="container">
    <div id="wrap">
      <header id="header">
  <div id="banner"></div>
  <div id="header-outer" class="outer">
    <div id="header-title" class="inner">
      <h1 id="logo-wrap">
        <a href="/" id="logo">Hexo</a>
      </h1>
      
    </div>
    <div id="header-inner" class="inner">
      <nav id="main-nav">
        <a id="main-nav-toggle" class="nav-icon"></a>
        
          <a class="main-nav-link" href="/">Home</a>
        
          <a class="main-nav-link" href="/archives">Archives</a>
        
      </nav>
      <nav id="sub-nav">
        
          <a id="nav-rss-link" class="nav-icon" href="/atom.xml" title="RSS Feed"></a>
        
        <a id="nav-search-btn" class="nav-icon" title="Search"></a>
      </nav>
      <div id="search-form-wrap">
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit">&#xF002;</button><input type="hidden" name="sitesearch" value="https://lcsever.gitee.io"></form>
      </div>
    </div>
  </div>
</header>

      <div class="outer">
        <section id="main">
  
    <article id="post-first" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/2022/12/21/first/" class="article-date">
  <time class="dt-published" datetime="2022-12-21T13:06:58.000Z" itemprop="datePublished">2022-12-21</time>
</a>
    
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/2022/12/21/first/">区块链共识</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <p>##pow共识机制</p>
<p>Proof-of-Work简称PoW，意为工作量证明，也称为Nakamoto共识，是比特币、以太坊等数字货币采用的共识机制，也是当前使用最广泛的共识机制。<br>1、节点获取挖矿难度、交易信息以及历史数据。以比特币为例，节点可以在任意时间加入或者退出网络。当节点加入到网络时，会向邻居节点发送请求信息并接收网络状态信息，包括本周期内挖矿难度值D，同时收集网络中的交易集合并计算交易集合的默克尔树根，并根据最长链原则选择当前多条链分支中指定分支，同时选择该分支上最新区块哈希值。该过程涉及到历史区块数据的同步，需要在网络条件良好的情况下进行数据同步，同步后的数据会保留在服务器中的目录上。<br>2、节点执行循环过程寻找解。当区块数据同步完毕并且信息搜集完毕后，节点执行工作量证明机制。工作量证明核心原理可以理解为如下函数所示：</p>
<p>其中MerkleRoot指交易集合形成的默克尔树的树根，Nonce指工作量证明的解，H()代表单项哈希函数。节点不断更换Nonce的值来寻找符合函数的解，该过程一般大约需要10分钟。一旦找到符合条件的解节点便打包交易，在区块模板中填充各个字段的信息并开始传播。<br>3、新区块的传播与上链。成功找到谜题答案的节点创建新区块传播到网络中，收到新区块的节点会对该区块进行一系列验证，包括交易是否合法、是否存在双花交易、是否是孤区块等，验证通过后将该区块更新到本地数据库中，如果验证不通过便抛弃该区块。之后便开始新一轮的挖矿。<br>从上述三个大步骤可以看出，核心工作是第二步，即不断变化随机数寻找满足条件的解，该过程需要消耗大量的CPU资源，因此比特币需要消耗很多的资源进行挖矿。图2.1展示了PoW的工作原理。</p>
<p>PoW存在着一些缺陷，这里总结如下：<br>1、性能与安全相互制约<br>众所周知，比特币性能低下是一个比较突出的问题，目前比特币每秒的交易量是7笔，而VISA每秒交易量是56,000笔。PoW性能主要取决于该机制的两个参数：一是区块的生成间隔，二是区块的大小。两者应当处于动态平衡中。10分钟的区块间隔可以使每一个区块在全网得到充分的广播，缩短区块间隔可以提高交易的吞吐量，但是会使得区块传播时间缩短，增加分叉的概率并降低主链的安全性。即使产生的分叉在足够的时间中会被解决，但是分叉数越多，系统消耗的能源也将越多。增加区块大小会使得交易验证时间缩短，但是延长了区块生成间隔以及传播时间。根据相关研究发现，为了保持10分钟的出块频率，区块的大小不能超过4MB。因此性能和安全性互相制约，难以兼得。<br>2、能源利用率低<br>2019年11月的数据显示，比特币一笔交易平均消耗的能源是1119KWh，相当于美国21个家庭一天的用电量，巨大的耗电量显然是比特币产生基于PoW的区块导致的。随着比特币网络总算力的不断增长，PoW为了保持10分钟一个区块的频率，会鼓励矿工持续投入更多的机器算力，这样的恶性循环使得比特币消耗的能源变得更多。<br>3、日蚀攻击<br>比特币网络的安全性取决于诚实节点的算力以及他们之间的通信能力。如果一个算力较强的恶意节点控制了一个诚实节点与系统其他部分的通信路径，那么该诚实节点就不会为系统做出持续贡献，这种攻击被称为“日蚀攻击”。日蚀攻击实际上是针对公链网络中节点之间的弱连接性的一种攻击方式。<br>4、自私挖矿<br>PoW中50%的错误容忍率是基于所有节点一旦挖出区块会立即将其传播到网络这一条件。但如果一个恶意节点没有遵守这个规则，而是基于某个区块进行挖矿，并不将挖到的区块传播出去，影响诚实节点挖出的区块的传播，这种攻击方式称为自私挖矿。<br>5、算力集中化<br>PoW的激励机制决定了矿工的收入与其算力成正比，一些节点会购买高昂的机器进行挖矿，以期其收入提高。不仅如此，算力高的节点也会形成以其为主力的矿池进行合作挖矿，并将获得的收入进行二次分配，使矿池中的节点受益。而那些算力较小的节点只能退出网络或者加入到矿池中获得稳定的收入。根据目前的数据显示，比特币超过50%的算力是由5个矿池控制的，以太坊中也是五个矿池控制了超过50%的算力。这样的现象将加剧算力集中化的问题。</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://lcsever.gitee.io/2022/12/21/first/" data-id="clbxq4cw30000nstm77v30ye6" data-title="区块链共识" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-test" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/2022/12/18/test/" class="article-date">
  <time class="dt-published" datetime="2022-12-18T07:42:03.000Z" itemprop="datePublished">2022-12-18</time>
</a>
    
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/2022/12/18/test/">test</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <p>测试</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://lcsever.gitee.io/2022/12/18/test/" data-id="clbxq4cw90002nstm32npf7wb" data-title="test" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-hello-world" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/2022/12/18/hello-world/" class="article-date">
  <time class="dt-published" datetime="2022-12-18T07:40:29.245Z" itemprop="datePublished">2022-12-18</time>
</a>
    
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/2022/12/18/hello-world/">Hello World</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <p>Welcome to <a target="_blank" rel="noopener" href="https://hexo.io/">Hexo</a>! This is your very first post. Check <a target="_blank" rel="noopener" href="https://hexo.io/docs/">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a target="_blank" rel="noopener" href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> or you can ask me on <a target="_blank" rel="noopener" href="https://github.com/hexojs/hexo/issues">GitHub</a>.</p>
<h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new <span class="string">&quot;My New Post&quot;</span></span><br></pre></td></tr></table></figure>

<p>More info: <a target="_blank" rel="noopener" href="https://hexo.io/docs/writing.html">Writing</a></p>
<h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo server</span><br></pre></td></tr></table></figure>

<p>More info: <a target="_blank" rel="noopener" href="https://hexo.io/docs/server.html">Server</a></p>
<h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure>

<p>More info: <a target="_blank" rel="noopener" href="https://hexo.io/docs/generating.html">Generating</a></p>
<h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure>

<p>More info: <a target="_blank" rel="noopener" href="https://hexo.io/docs/one-command-deployment.html">Deployment</a></p>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://lcsever.gitee.io/2022/12/18/hello-world/" data-id="clbxq4cw80001nstmgf1a1x1u" data-title="Hello World" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  


</section>
        
          <aside id="sidebar">
  
    

  
    

  
    
  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Archives</h3>
    <div class="widget">
      <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2022/12/">December 2022</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Recent Posts</h3>
    <div class="widget">
      <ul>
        
          <li>
            <a href="/2022/12/21/first/">区块链共识</a>
          </li>
        
          <li>
            <a href="/2022/12/18/test/">test</a>
          </li>
        
          <li>
            <a href="/2022/12/18/hello-world/">Hello World</a>
          </li>
        
      </ul>
    </div>
  </div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      
      &copy; 2022 John Doe<br>
      Powered by <a href="https://hexo.io/" target="_blank">Hexo</a>
    </div>
  </div>
</footer>

    </div>
    <nav id="mobile-nav">
  
    <a href="/" class="mobile-nav-link">Home</a>
  
    <a href="/archives" class="mobile-nav-link">Archives</a>
  
</nav>
    


<script src="/js/jquery-3.4.1.min.js"></script>



  
<script src="/fancybox/jquery.fancybox.min.js"></script>




<script src="/js/script.js"></script>





  </div>
</body>
</html>